package cn.zhukelili.expand2;

import java.util.HashMap;

/**
 * @description: 享元工厂
 * @author: hhbeast
 * @since: 2018/7/28 15:31
 */
public class SignInfoFactory {
    //池容器
    private static HashMap<ExtrinsicState, SignInfo> pool = new HashMap<ExtrinsicState,SignInfo>();//从池中获得对象

    public static SignInfo getSignInfo(ExtrinsicState key) {
    //设置返回对象
        SignInfo result = null;
        //池中没有该对象，则建立，并放入池中
        if (!pool.containsKey(key)) {
            result = new SignInfo();
            pool.put(key, result);
        } else {
            result = pool.get(key);
        }
        return result;
    }
}

/*
注意，一定要覆写equals和hashCode方法，否则它作为HashMap中的key值是根本没有意
义的，只有hashCode值相等，并且equals返回结果为true，两个对象才相等，也只有在这种情
况下才有可能从对象池中查找获得对象。
 */
